package org.lanqiao.tjut.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.lanqiao.tjut.bean.EmployeeBean;
import org.lanqiao.tjut.db.DBFactory;
import org.lanqiao.tjut.myUtils.MyUtils;


public class EmployeeInfoAddModel {
	/**
	 * 动态拼接
	 * 进行数据删除操作
	 * @param empId
	 * @return
	 */
	public int deleteEmployeeInfoById(String empId){
		int re = 0;
		//物理删除
		//逻辑删除：在数据库中定义一个Integer类型的删除字段 isDelete ，默认值为0 
		//进行删除操作是支持事务处理  ：String sbSql = "update TB_EMPLOYEE set   isDelete=1 where and emp_id=? ";
		String sbSql = "delete TB_EMPLOYEE where 1=1 and emp_id=? ";
		//查询sql参数集
		List<Object> lstParas = new ArrayList<>();
		lstParas.add(empId);
		//调用db层进行数据删除操作
		re = DBFactory.getDBDriverInstance().update(sbSql.toString(), lstParas.toArray());
		return re;
	}
	public EmployeeBean getEmoloyeeInfoById(String empId){
		EmployeeBean empB = null;
		//查询sql语句
		String sbSql = "SELECT * FROM TB_EMPLOYEE WHERE 1=1 and emp_id=? ";
		//查询sql结果集
		List<Object> lstParas = new ArrayList<>();
		lstParas.add(empId);
		//调用db层进行数据查询
		empB = DBFactory.getDBDriverInstance().query(sbSql.toString(), new BeanHandler<>(EmployeeBean.class), lstParas.toArray());
		return empB;
	}
	public int addEmployeeInfo(EmployeeBean empB){
		int Re = 0;
		//数据库操作sql语句
		//StringBuilder 类用于动态拼接sql语句
		//动态拼接时习惯性加空格
		StringBuilder sbSql = new StringBuilder();
		List<Object> lstParas = new ArrayList<>();
		if(empB != null && empB.getEmp_id() == null){
		sbSql.append( "INSERT INTO TB_EMPLOYEE(emp_name,emp_sex,emp_date,emp_age,emp_tel,emp_ad,emp_img)"
				+ "VALUES (?, ?, to_date(?,'yyyy-mm-dd HH24:mi:ss'),?,?,?,?)");
		
		//添加参数
		lstParas.add(empB.getEmp_name());
		lstParas.add(empB.getEmp_sex());
		lstParas.add(MyUtils.convertDate2String(empB.getEmp_date(), "yyyy/MM/dd"));
		lstParas.add(empB.getEmp_age());
		lstParas.add(empB.getEmp_tel());
		lstParas.add(empB.getEmp_ad());
		lstParas.add(empB.getEmp_img());
		}else{
			//修改操作
			sbSql.append(" UPDATE TB_EMPLOYEE SET emp_name=?,emp_sex=?,emp_date=to_date(?,'yyyy-mm-dd HH24:mi:ss'),emp_age=?,emp_tel=?,emp_ad=? ");
			lstParas.add(empB.getEmp_name());
			lstParas.add(empB.getEmp_sex());
			lstParas.add(MyUtils.convertDate2String(empB.getEmp_date(), "yyyy/MM/dd"));
			lstParas.add(empB.getEmp_age());
			lstParas.add(empB.getEmp_tel());
			lstParas.add(empB.getEmp_ad());
			//如果头像存在则进行头像的修改
			if(empB.getEmp_img() !=null && !empB.getEmp_img().equals("") ){
				sbSql.append( " ,emp_img=? ");
				lstParas.add(empB.getEmp_img());
			}
			sbSql.append(" where emp_id=?");
			lstParas.add(empB.getEmp_id());
		}

		//调用db层执行sql语句
		Re=DBFactory.getDBDriverInstance().update(sbSql.toString(), lstParas.toArray());
		//返回登录查询的结果信息集
		return Re;
	}
	
	/**进行数据查询操作
	 * @param empB
	 * @return
	 */
	public List<EmployeeBean> queryEmployeeInfoByParams(EmployeeBean empB){
		List<EmployeeBean> lstEmps = null;
		//查询sql语句
		StringBuilder sbSql = new StringBuilder("SELECT * FROM TB_EMPLOYEE WHERE 1=1 ");
		List<Object> lstParas = new ArrayList<>();
		if(empB != null){
			String empName = empB.getEmp_name();
			if(empName !=null && !empName.equals("")){
				sbSql.append(" and emp_name like ?");
				lstParas.add("%"+empName+"%");
			}

			String empSex = empB.getEmp_sex();
			if(empSex !=null && !empSex.equals("")){
				sbSql.append("  and emp_sex= ?");
				lstParas.add(empSex);
			}
			Date empDate = empB.getEmp_date();
			if(empDate !=null){
				sbSql.append(" and emp_date >= to_date(?,'yyyy-mm-dd hh24:mi:ss') ");
				lstParas.add(MyUtils.convertDate2String(empDate, "yyyy-MM-dd HH:mm:ss"));
			}
			Date empDate2 = empB.getEmp_date2();
			if(empDate2 !=null){
				sbSql.append(" and emp_date <= to_date(?,'yyyy-mm-dd hh24:mi:ss') ");
				lstParas.add(MyUtils.convertDate2String(empDate2, "yyyy-MM-dd HH:mm:ss"));
		}
			
	}
		sbSql.append(" order by emp_id desc "); 
		lstEmps = DBFactory.getDBDriverInstance().query(sbSql.toString(), new BeanListHandler<>(EmployeeBean.class),lstParas.toArray());
		return lstEmps;
	}
}
